/**
 *
 */
package com.enjoyor.soa.traffic.api.service.dubbo.idcs;

import java.util.List;

/**
 * 布控过车数据监听
 *
 * @author ly
 */
public interface DubboControlPassCallbackService {

    /**
     * 订阅布控过车数据
     *
     * @param listenerId   监听ID，不重复ID，可以为IP或者编号，只有一个web层可以不填
     * @param bayonetIds   卡口编号列表
     * @param vehiclePlate 号牌号码
     * @param plateType    号牌类型
     * @param controlType  布控类型
     * @param listener     监听
     */
    void addControlPassListener(String listenerId, List<String> bayonetIds, String vehiclePlate, String plateType, List<String> controlTypes, IDCSCallbackListener listener);

    /**
     * 移除订阅
     *
     * @param listenerId 监听ID，不重复ID，可以为IP或者编号，只有一个web层可以不填
     * @return 是否移除成功
     */
    boolean removeControlPassListener(String listenerId);

    /**
     * 订阅布控过车数据心跳
     *
     * @param listenerId 监听ID，不重复ID，可以为IP或者编号，只有一个web层可以不填
     * @return
     */
    boolean ControlPassHeartBeat(String listenerId);

    /**
     * 订阅卡口布控数据
     *
     * @param listenerId 监听ID，不重复ID，可以为IP或者编号，只有一个web层传空
     * @param listener   监听
     */
    void addBayonetControlCountListener(String listenerId, IDCSCallbackListener listener);

    /**
     * 移除订阅
     *
     * @param listenerId 监听ID，不重复ID，可以为IP或者编号，只有一个web层传空
     * @return
     */
    boolean removeBayonetControlCountListener(String listenerId);

    /**
     * 订阅卡口布控数据心跳
     *
     * @param listenerId 监听ID，不重复ID，可以为IP或者编号，只有一个web层可以不填
     * @return
     */
    boolean BayonetControlHeartBeat(String listenerId);
}
